/*
 * ProcesadorConsulta.cpp
 *
 *  Created on: 01/06/2011
 *      Author: catu
 */

#include "ProcesadorConsulta.h"

ProcesadorConsulta::ProcesadorConsulta() {

}

ProcesadorConsulta::~ProcesadorConsulta() {

}


list<int> ProcesadorConsulta::procesarApariciones(list<Aparicion> apariciones)
{
	list<int> documentosCoincidentes;

	return documentosCoincidentes;
}



list<int> ProcesadorConsulta::consultarPalabras(list<string> palabras)
{
	list<string> :: iterator itPalabras;

	HashTermino hashTermino(TAM_CUBO,PATH_BLOQUES_TERMINO,PATH_ESP_LIBRE_TERMINO,PATH_TABLA_TERMINO,PATH_TMP_TERMINO,PATH_ID);

	HashPalabra hashPalabra;
	hashPalabra.crear_condiciones_iniciales();

	HandlerArchivoOcurrencias handlerArchivoOcurrencias;

	list<Aparicion> apariciones;

	for(itPalabras = palabras.begin();itPalabras!= palabras.end();++itPalabras)
	{
		Aparicion aparicion;

		//int idTermino = hashTermino.consultar(*itPalabras);

		//TODO agregar un consultar en HashPalabras que devuelva la lista de offsets de cada termino
		list<int> offsetsArchivoOcurrencias;

		//Esto devuelve la lista de offsets al archivo de ocurrencias correspondiente a ese termino
		//offsetsArchivoOcurrencias = hashPalabra.consultar(idTermino);

		aparicion.setDocumentos(handlerArchivoOcurrencias.obtenerListaDocumentos(offsetsArchivoOcurrencias));
		aparicion.setPalabra(*itPalabras);

		apariciones.push_back(aparicion);
	}


	//Metodo que realiza la interseccion de las listas para obtener los documentos en comun.
	return this->procesarApariciones(apariciones);
}
